Análisis clúster
Modifica dentro del documento .Rmd tus datos
personales (nombre y DNI) ubicados en la cabecera del archivo.
Asegúrate antes de seguir editando el documento que el archivo
.Rmd compila (Knit) correctamente y se genera el
html correspondiente.
Los chunks creados están o vacíos o incompletos, de ahí que
tengan la opción eval = FALSE. Una vez que edites lo que
consideres debes de cambiar a eval = TRUE para que los
chunk se ejecuten
Necesitaremos los siguientes paquetes:
{tidyverse}.{tidymodels}{readxl}{skimr}.{factoextra} y {FactoMineR}{cluster}El archivo de datos a usar será provincias.xlsx
provincias <- read_xlsx(path = "./provincias.xlsx")
El fichero contiene información socioeconómica de las provincias españolas
glimpse(provincias)
Rows: 52
Columns: 19
$ Prov <chr> "Albacete", "Alicante", "Almería", "Álava", "A…
$ Poblacion <dbl> 396987, 1868438, 701688, 321932, 1061756, 6909…
$ Mortalidad <dbl> 9.41, 8.00, 6.91, 7.72, 12.16, 9.54, 7.08, 8.1…
$ Natalidad <dbl> 9.02, 8.52, 11.41, 10.26, 6.26, 8.96, 9.51, 9.…
$ IPC <dbl> 101.819, 102.309, 101.454, 102.743, 102.070, 1…
$ NumEmpresas <dbl> 26701, 130438, 40327, 19548, 67451, 39640, 871…
$ Industria <dbl> 3332, 9992, 2191, 2048, 3496, 3059, 4413, 2741…
$ Construccion <dbl> 3428, 17418, 5388, 2669, 8435, 4599, 14485, 50…
$ CTH <dbl> 11111, 52720, 18184, 7557, 28045, 18420, 30644…
$ Infor <dbl> 189, 1851, 366, 323, 787, 332, 1403, 11134, 15…
$ AFS <dbl> 624, 2745, 944, 354, 1445, 948, 1627, 8829, 16…
$ APT <dbl> 3278, 19865, 5840, 3341, 10598, 5235, 16444, 8…
$ TasaActividad <dbl> 57.72, 58.21, 60.63, 57.86, 51.42, 56.00, 68.6…
$ TasaParo <dbl> 23.28, 23.39, 31.08, 13.33, 16.97, 29.63, 13.8…
$ Ocupados <dbl> 144.8, 687.1, 234.4, 133.0, 389.0, 224.6, 555.…
$ PIB <dbl> 7235991, 32139347, 11909684, 10716021, 2177043…
$ CANE <dbl> 20888, 25968, 22945, 3691, 23910, 37438, 10748…
$ TVF <dbl> 215948, 1274096, 395086, 155767, 613905, 37249…
$ VS <dbl> 30244, 326705, 72486, 9791, 73250, 49441, 8571…
Algunas de las variables son:
Prov: nombre de la provinciaPoblacion: habitantesMortalidad, Natalidad: tasa de
mortalidad/natalidad (en tantos por mil)IPC: índice de precios de consumo (sobre un valor base
de 100).NumEmpresas: número de empresas.PIB: producto interior brutoCTH: coyuntura turística hotelera (pernoctaciones en
establecimientos hoteleros)Calcula la matriz de covarianzas y de correlaciones. Calcula de nuevo la matriz deUsa el paquete
{corrplot}para una representación gráfica de la misma. Detalla y comenta lo que consideres para su correcta interpretación.
# Antes de empezar a trabajar convertimos a data.frame para tener row.names y eliminamos Prov
provincias_df <- as.data.frame(provincias) %>%
select(-Prov)
row.names(provincias_df) <- provincias %>% pull(Prov)
# Generamos una matriz de covarianzas
cov_mat <-
cov(provincias_df)
cov_mat
Poblacion Mortalidad Natalidad IPC
Poblacion 1.332402e+12 -8.410948e+05 2.825777e+05 3.166674e+05
Mortalidad -8.410948e+05 4.497279e+00 -3.340672e+00 3.274592e-01
Natalidad 2.825777e+05 -3.340672e+00 4.574438e+00 -4.449502e-01
IPC 3.166674e+05 3.274592e-01 -4.449502e-01 6.713054e-01
NumEmpresas 1.039158e+11 -5.936911e+04 2.033182e+04 2.705253e+04
Industria 5.377378e+09 -2.886718e+03 9.580191e+02 1.660830e+03
Construccion 1.189841e+10 -6.572561e+03 1.987946e+03 3.431592e+03
CTH 3.469477e+10 -2.107415e+04 6.546901e+03 8.959516e+03
Infor 3.252415e+09 -1.643783e+03 7.308544e+02 7.343294e+02
AFS 2.368926e+09 -1.338667e+03 4.630778e+02 5.468300e+02
APT 2.308163e+10 -1.279613e+04 4.942979e+03 5.560493e+03
TasaActividad 1.559201e+06 -6.287982e+00 4.084571e+00 2.971163e-01
TasaParo 7.925493e+04 -6.858438e+00 5.710437e+00 -3.325189e+00
Ocupados 5.587768e+08 -3.378416e+02 1.162152e+02 1.427088e+02
PIB 3.710902e+13 -2.054416e+07 7.978598e+06 9.542769e+06
CANE 1.600881e+09 4.972107e+02 -3.756189e+03 -2.235199e+03
TVF 6.151011e+11 -3.790429e+05 9.714958e+04 1.502562e+05
VS 3.780485e+10 -3.053086e+04 -3.420846e+03 9.054892e+03
NumEmpresas Industria Construccion CTH
Poblacion 1.039158e+11 5.377378e+09 1.189841e+10 3.469477e+10
Mortalidad -5.936911e+04 -2.886718e+03 -6.572561e+03 -2.107415e+04
Natalidad 2.033182e+04 9.580191e+02 1.987946e+03 6.546901e+03
IPC 2.705253e+04 1.660830e+03 3.431592e+03 8.959516e+03
NumEmpresas 8.193867e+09 4.234973e+08 9.429470e+08 2.714669e+09
Industria 4.234973e+08 2.332528e+07 4.887123e+07 1.423064e+08
Construccion 9.429470e+08 4.887123e+07 1.096990e+08 3.115202e+08
CTH 2.714669e+09 1.423064e+08 3.115202e+08 9.104959e+08
Infor 2.599586e+08 1.281172e+07 2.993090e+07 8.362453e+07
AFS 1.858531e+08 9.461821e+06 2.132317e+07 6.137273e+07
APT 1.829553e+09 9.205337e+07 2.104079e+08 5.978440e+08
TasaActividad 1.216057e+05 5.696595e+03 1.444756e+04 3.975735e+04
TasaParo -3.548038e+04 -2.705065e+03 -7.970151e+03 -1.511967e+03
Ocupados 4.394446e+07 2.258171e+06 5.058452e+06 1.454283e+07
PIB 2.937681e+12 1.492101e+11 3.381971e+11 9.608873e+11
CANE 5.790435e+07 8.528402e+06 4.444882e+06 4.030497e+07
TVF 4.782485e+10 2.507663e+09 5.496909e+09 1.608442e+10
VS 2.828095e+09 1.583504e+08 3.369756e+08 1.008605e+09
Infor AFS APT TasaActividad
Poblacion 3.252415e+09 2.368926e+09 2.308163e+10 1.559201e+06
Mortalidad -1.643783e+03 -1.338667e+03 -1.279613e+04 -6.287982e+00
Natalidad 7.308544e+02 4.630778e+02 4.942979e+03 4.084571e+00
IPC 7.343294e+02 5.468300e+02 5.560493e+03 2.971163e-01
NumEmpresas 2.599586e+08 1.858531e+08 1.829553e+09 1.216057e+05
Industria 1.281172e+07 9.461821e+06 9.205337e+07 5.696595e+03
Construccion 2.993090e+07 2.132317e+07 2.104079e+08 1.444756e+04
CTH 8.362453e+07 6.137273e+07 5.978440e+08 3.975735e+04
Infor 8.898914e+06 5.978443e+06 6.023438e+07 3.716075e+03
AFS 5.978443e+06 4.278261e+06 4.184881e+07 2.654717e+03
APT 6.023438e+07 4.184881e+07 4.163130e+08 2.740845e+04
TasaActividad 3.716075e+03 2.654717e+03 2.740845e+04 1.634163e+01
TasaParo -2.263650e+03 -4.574284e+02 -1.117688e+04 7.836922e-01
Ocupados 1.399042e+06 1.000399e+06 9.839308e+06 6.957010e+02
PIB 9.633966e+10 6.706243e+10 6.665333e+11 4.381319e+07
CANE -2.823547e+06 2.530272e+06 -1.628132e+06 -6.728514e+03
TVF 1.462541e+09 1.088854e+09 1.050208e+10 7.101507e+05
VS 7.053626e+07 6.463586e+07 5.658359e+08 6.182306e+04
TasaParo Ocupados PIB CANE
Poblacion 7.925493e+04 5.587768e+08 3.710902e+13 1.600881e+09
Mortalidad -6.858438e+00 -3.378416e+02 -2.054416e+07 4.972107e+02
Natalidad 5.710437e+00 1.162152e+02 7.978598e+06 -3.756189e+03
IPC -3.325189e+00 1.427088e+02 9.542769e+06 -2.235199e+03
NumEmpresas -3.548038e+04 4.394446e+07 2.937681e+12 5.790435e+07
Industria -2.705065e+03 2.258171e+06 1.492101e+11 8.528402e+06
Construccion -7.970151e+03 5.058452e+06 3.381971e+11 4.444882e+06
CTH -1.511967e+03 1.454283e+07 9.608873e+11 4.030497e+07
Infor -2.263650e+03 1.399042e+06 9.633966e+10 -2.823547e+06
AFS -4.574284e+02 1.000399e+06 6.706243e+10 2.530272e+06
APT -1.117688e+04 9.839308e+06 6.665333e+11 -1.628132e+06
TasaActividad 7.836922e-01 6.957010e+02 4.381319e+07 -6.728514e+03
TasaParo 4.858657e+01 -1.851125e+02 -2.176911e+07 3.888675e+04
Ocupados -1.851125e+02 2.364606e+05 1.581249e+10 3.381542e+05
PIB -2.176911e+07 1.581249e+10 1.074005e+15 -3.316858e+09
CANE 3.888675e+04 3.381542e+05 -3.316858e+09 2.035655e+08
TVF 4.343622e+04 2.568868e+08 1.686704e+13 1.174057e+09
VS 3.836534e+04 1.516691e+07 8.891085e+11 2.769825e+08
TVF VS
Poblacion 6.151011e+11 3.780485e+10
Mortalidad -3.790429e+05 -3.053086e+04
Natalidad 9.714958e+04 -3.420846e+03
IPC 1.502562e+05 9.054892e+03
NumEmpresas 4.782485e+10 2.828095e+09
Industria 2.507663e+09 1.583504e+08
Construccion 5.496909e+09 3.369756e+08
CTH 1.608442e+10 1.008605e+09
Infor 1.462541e+09 7.053626e+07
AFS 1.088854e+09 6.463586e+07
APT 1.050208e+10 5.658359e+08
TasaActividad 7.101507e+05 6.182306e+04
TasaParo 4.343622e+04 3.836534e+04
Ocupados 2.568868e+08 1.516691e+07
PIB 1.686704e+13 8.891085e+11
CANE 1.174057e+09 2.769825e+08
TVF 2.893064e+11 2.075973e+10
VS 2.075973e+10 3.341943e+09
# Generamos una matriz de correlaciones
cor_mat <-
cor(provincias_df)
cor_mat
Poblacion Mortalidad Natalidad IPC
Poblacion 1.000000000 -0.34359937 0.11445938 0.33483095
Mortalidad -0.343599371 1.00000000 -0.73652925 0.18846127
Natalidad 0.114459382 -0.73652925 1.00000000 -0.25391157
IPC 0.334830949 0.18846127 -0.25391157 1.00000000
NumEmpresas 0.994533276 -0.30927237 0.10501778 0.36475679
Industria 0.964582668 -0.28184861 0.09274529 0.41971227
Construccion 0.984169957 -0.29590918 0.08874307 0.39988432
CTH 0.996110046 -0.32933367 0.10144436 0.36239775
Infor 0.944538806 -0.25983697 0.11454957 0.30044315
AFS 0.992202208 -0.30518551 0.10467705 0.32267001
APT 0.980028733 -0.29572891 0.11326870 0.33261608
TasaActividad 0.334146420 -0.73348067 0.47242170 0.08970542
TasaParo 0.009850323 -0.46397242 0.38303840 -0.58223482
Ocupados 0.995500027 -0.32761124 0.11174153 0.35818832
PIB 0.980976869 -0.29560406 0.11382945 0.35539497
CANE 0.097205159 0.01643287 -0.12309106 -0.19120709
TVF 0.990717314 -0.33230307 0.08444871 0.34095210
VS 0.566539758 -0.24903743 -0.02766720 0.19117175
NumEmpresas Industria Construccion CTH
Poblacion 0.99453328 0.96458267 0.98416996 0.996110046
Mortalidad -0.30927237 -0.28184861 -0.29590918 -0.329333667
Natalidad 0.10501778 0.09274529 0.08874307 0.101444356
IPC 0.36475679 0.41971227 0.39988432 0.362397751
NumEmpresas 1.00000000 0.96870767 0.99458429 0.993878918
Industria 0.96870767 1.00000000 0.96613670 0.976499325
Construccion 0.99458429 0.96613670 1.00000000 0.985702825
CTH 0.99387892 0.97649932 0.98570283 1.000000000
Infor 0.96270044 0.88925300 0.95796587 0.929022359
AFS 0.99263984 0.94716931 0.98427617 0.983338024
APT 0.99058205 0.93414916 0.98457937 0.971043919
TasaActividad 0.33232416 0.29177908 0.34122871 0.325934818
TasaParo -0.05623228 -0.08035375 -0.10917096 -0.007188617
Ocupados 0.99834423 0.96153241 0.99320060 0.991129933
PIB 0.99027798 0.94271768 0.98529352 0.971695960
CANE 0.04483474 0.12376621 0.02974452 0.093619748
TVF 0.98226824 0.96533176 0.97574923 0.991031374
VS 0.54044321 0.56716093 0.55654176 0.578205863
Infor AFS APT TasaActividad
Poblacion 0.94453881 0.99220221 0.980028733 0.33414642
Mortalidad -0.25983697 -0.30518551 -0.295728912 -0.73348067
Natalidad 0.11454957 0.10467705 0.113268704 0.47242170
IPC 0.30044315 0.32267001 0.332616084 0.08970542
NumEmpresas 0.96270044 0.99263984 0.990582046 0.33232416
Industria 0.88925300 0.94716931 0.934149162 0.29177908
Construccion 0.95796587 0.98427617 0.984579370 0.34122871
CTH 0.92902236 0.98333802 0.971043919 0.32593482
Infor 1.00000000 0.96891562 0.989614166 0.30815427
AFS 0.96891562 1.00000000 0.991606815 0.31749496
APT 0.98961417 0.99160681 1.000000000 0.33229728
TasaActividad 0.30815427 0.31749496 0.332297285 1.00000000
TasaParo -0.10886358 -0.03172717 -0.078587345 0.02781248
Ocupados 0.96445717 0.99462721 0.991688246 0.35391218
PIB 0.98544753 0.98933314 0.996801753 0.33071519
CANE -0.06633983 0.08573962 -0.005592777 -0.11665930
TVF 0.91150808 0.97871645 0.956943036 0.32660569
VS 0.40901985 0.54055564 0.479712437 0.26454726
TasaParo Ocupados PIB CANE
Poblacion 0.009850323 0.99550003 0.980976869 0.097205159
Mortalidad -0.463972419 -0.32761124 -0.295604063 0.016432872
Natalidad 0.383038405 0.11174153 0.113829452 -0.123091063
IPC -0.582234824 0.35818832 0.355394973 -0.191207090
NumEmpresas -0.056232280 0.99834423 0.990277980 0.044834740
Industria -0.080353746 0.96153241 0.942717675 0.123766207
Construccion -0.109170963 0.99320060 0.985293522 0.029744519
CTH -0.007188617 0.99112993 0.971695960 0.093619748
Infor -0.108863576 0.96445717 0.985447530 -0.066339831
AFS -0.031727168 0.99462721 0.989333140 0.085739618
APT -0.078587345 0.99168825 0.996801753 -0.005592777
TasaActividad 0.027812476 0.35391218 0.330715195 -0.116659302
TasaParo 1.000000000 -0.05461326 -0.095297068 0.391013190
Ocupados -0.054613263 1.00000000 0.992242627 0.048739757
PIB -0.095297068 0.99224263 1.000000000 -0.007093683
CANE 0.391013190 0.04873976 -0.007093683 1.000000000
TVF 0.011585501 0.98216232 0.956878285 0.152988299
VS 0.095209736 0.53953310 0.469301776 0.335815536
TVF VS
Poblacion 0.99071731 0.56653976
Mortalidad -0.33230307 -0.24903743
Natalidad 0.08444871 -0.02766720
IPC 0.34095210 0.19117175
NumEmpresas 0.98226824 0.54044321
Industria 0.96533176 0.56716093
Construccion 0.97574923 0.55654176
CTH 0.99103137 0.57820586
Infor 0.91150808 0.40901985
AFS 0.97871645 0.54055564
APT 0.95694304 0.47971244
TasaActividad 0.32660569 0.26454726
TasaParo 0.01158550 0.09520974
Ocupados 0.98216232 0.53953310
PIB 0.95687829 0.46930178
CANE 0.15298830 0.33581554
TVF 1.00000000 0.66764132
VS 0.66764132 1.00000000
# Hacemos un corrplot para observar nuestros resultados de la matriz de correlaciones
corrplot(cor(provincias_df), type = "upper",
tl.col = "black", method = "ellipse")
# Generamos otra matriz de tipo numérico para ver más exactamente estas correlaciones
corrplot(cor_mat, method = 'number')
Podemos observar como las variables Poblacion, NumEmpresas, Industria, Construccion, CTH, Infor, AFS, APt, Ocupados, PIB y TVF tienen una alta correlación positiva entre todas ellas. También observamos que por ejemplo la tasa de paro tiene una correlación negativa media con las variables Mortalidad e IPC, a mayor TasaParo, menor IPC y Mortalidad
Estandariza los datos y guardalos en provincias_std
Calcula con
eigen()los autovalores y autovectores de la matriz de correlaciones e interpreta dichos resultados en relación a las componentes principales de las variables originales.
# Calculamos el número de autoelementos con la función eigen
autoelementos <- eigen(cor_mat)
autoelementos
eigen() decomposition
$values
[1] 1.146640e+01 2.560508e+00 1.634097e+00 9.340488e-01 4.565320e-01
[6] 4.143630e-01 3.071743e-01 1.166154e-01 7.309913e-02 2.034496e-02
[11] 9.027568e-03 3.566115e-03 2.372720e-03 8.013952e-04 5.472749e-04
[16] 3.512710e-04 1.028975e-04 4.950858e-05
$vectors
[,1] [,2] [,3] [,4] [,5]
[1,] 0.29352698 0.002493342 0.049947340 -0.05339540 -0.015898841
[2,] -0.10629199 -0.527120141 0.188867032 -0.16131678 0.024146585
[3,] 0.04062702 0.495419403 -0.270681171 -0.10967036 -0.382061614
[4,] 0.10991169 -0.365322291 -0.262317619 0.43504738 -0.556757431
[5,] 0.29418239 -0.026147510 0.007952241 -0.06913798 -0.006367061
[6,] 0.28562283 -0.044737470 0.046369149 0.02345108 -0.150042973
[7,] 0.29326489 -0.045381770 -0.012082096 -0.02639413 0.008113738
[8,] 0.29286608 -0.010617503 0.048841149 -0.02758090 -0.028366126
[9,] 0.28150192 -0.042018125 -0.064640257 -0.22152688 0.070433510
[10,] 0.29246592 -0.016454205 0.039554303 -0.09168100 0.003041574
[11,] 0.29072490 -0.029433207 -0.028068230 -0.14186101 0.031732816
[12,] 0.11433729 0.330614591 -0.362734482 0.46305159 0.133043722
[13,] -0.01399634 0.461562171 0.387356995 -0.22020186 -0.055362718
[14,] 0.29442838 -0.016838806 0.002429338 -0.06005252 -0.001232463
[15,] 0.29090708 -0.036157691 -0.037491740 -0.13360720 -0.008622583
[16,] 0.01778860 0.096184477 0.656743135 0.27839359 -0.488037746
[17,] 0.29156666 -0.001599604 0.099761847 0.04414466 0.046676773
[18,] 0.17234327 0.047821027 0.290142940 0.56712077 0.502605369
[,6] [,7] [,8] [,9]
[1,] 0.009261485 -0.067375388 0.049695939 0.063533937
[2,] -0.033735542 0.194593899 -0.677240259 0.377641454
[3,] 0.313460111 0.588024487 -0.256257868 0.063132926
[4,] 0.350737255 -0.328406660 -0.146407863 -0.180898036
[5,] -0.006803308 -0.016541352 0.004345160 0.087585774
[6,] 0.061617223 0.064730810 0.277225726 0.598423544
[7,] -0.006262106 0.026640155 0.030059205 0.029546241
[8,] 0.047239229 -0.068140824 0.107571562 0.261268280
[9,] -0.125617691 0.051367829 -0.249587279 -0.415131011
[10,] -0.054714373 0.018516638 -0.071851535 -0.178586941
[11,] -0.080055846 0.008053971 -0.124821218 -0.199015131
[12,] -0.528510461 -0.186075273 -0.370767601 0.246498807
[13,] 0.304199666 -0.591402972 -0.343449492 0.089255270
[14,] -0.039890164 -0.023453829 0.005640881 -0.009548811
[15,] -0.077030649 0.008952134 -0.056398210 -0.156415106
[16,] -0.419227586 0.199631828 0.013485836 -0.149563592
[17,] 0.073722587 -0.005584984 0.069914036 0.095085695
[18,] 0.430852254 0.257315614 -0.125215945 -0.114868372
[,10] [,11] [,12] [,13]
[1,] 0.350085935 0.186230539 0.1711785775 0.010288303
[2,] 0.075589860 -0.007930229 0.0420207640 0.021526962
[3,] 0.082446318 -0.020289162 0.0162179700 -0.017268779
[4,] -0.024453594 0.018055215 -0.0165433445 -0.009256375
[5,] 0.022328838 -0.155683246 -0.1868313262 -0.295730236
[6,] -0.549771328 0.313257119 -0.0983659710 0.159247816
[7,] -0.191834125 -0.821885503 0.1664388522 0.342872601
[8,] 0.275273747 -0.176716870 -0.2371619940 -0.377496712
[9,] -0.455403694 0.145292814 -0.1647985653 -0.169331304
[10,] 0.280705914 0.197698905 -0.4202117212 0.708492865
[11,] -0.063053183 -0.018374368 -0.2760928653 -0.285162833
[12,] 0.002558714 0.022324556 0.0006653841 0.022821245
[13,] -0.112317487 -0.013947370 0.0209740158 0.049593889
[14,] 0.154687198 -0.048862657 0.2063706502 -0.018496220
[15,] -0.098205180 0.224212469 0.7033944369 0.025058312
[16,] -0.018061942 -0.036012420 0.0068803352 -0.057390515
[17,] 0.320576240 0.138218764 0.1485323831 -0.081502147
[18,] -0.097744721 0.033767221 0.0002578474 -0.018041259
[,14] [,15] [,16] [,17]
[1,] 0.174252449 0.528193532 -0.5074390165 -0.3645836076
[2,] 0.012714926 0.006179773 -0.0007385454 -0.0017830808
[3,] 0.007145884 0.010947891 -0.0010884443 0.0031311475
[4,] 0.003959246 0.003740459 0.0067705625 0.0041585701
[5,] -0.198427286 -0.216945648 0.1011828614 -0.2158364244
[6,] 0.083661952 -0.036645845 -0.0274895935 -0.0289281260
[7,] 0.040333104 0.172074291 0.0517103111 -0.1011674569
[8,] -0.459614346 0.104642291 -0.1348807749 0.3944508893
[9,] 0.063539475 0.453142059 0.0509083701 0.3227546858
[10,] -0.207133987 -0.137066568 0.0335887182 0.0637126478
[11,] 0.214532746 -0.367229939 -0.0374738932 -0.5220390566
[12,] -0.007663637 0.017628269 0.0166789316 -0.0042896852
[13,] 0.006561163 -0.031150623 0.0136695061 -0.0010611951
[14,] 0.550167465 -0.425843706 -0.2681093335 0.5192283126
[15,] -0.491058860 -0.230864767 0.0185550861 -0.0582894917
[16,] -0.009889913 0.008894585 -0.0107381109 0.0036300393
[17,] 0.265988870 0.187180605 0.7868348317 -0.0040644103
[18,] -0.049235072 -0.043019092 -0.1164353064 0.0006033047
[,18]
[1,] -0.1033819874
[2,] 0.0093642618
[3,] 0.0024522685
[4,] 0.0006333815
[5,] -0.7807168763
[6,] 0.0538942552
[7,] 0.0824471845
[8,] 0.3488906784
[9,] -0.0852073738
[10,] -0.0228329277
[11,] 0.4629930678
[12,] 0.0075771232
[13,] 0.0059635657
[14,] -0.1113370996
[15,] 0.0871095987
[16,] -0.0033788830
[17,] 0.0775931859
[18,] -0.0043631422
Haciendo uso de
PCA()del paquete{FactoMineR}calcula todas las componentes principales. Repite de nuevo el análisis con el mínimo número de componentes necesarias para capturar al menos el 95% de la información de los datos.
# Haciendo uso de PCA() callculamos todas las componentes principales
pca_fit <-
PCA(provincias_df, scale.unit = TRUE,
ncp = ncol(provincias_df), graph = FALSE)
# Repetimos el proceso capturando al menos el 95% de la información de los datos
# Calculamos mediante la función "eig" cual es el numéro de componentes necesarios para tener al menos el 95%
pca_fit$eig
eigenvalue percentage of variance
comp 1 1.146640e+01 6.370222e+01
comp 2 2.560508e+00 1.422504e+01
comp 3 1.634097e+00 9.078315e+00
comp 4 9.340488e-01 5.189160e+00
comp 5 4.565320e-01 2.536289e+00
comp 6 4.143630e-01 2.302017e+00
comp 7 3.071743e-01 1.706524e+00
comp 8 1.166154e-01 6.478631e-01
comp 9 7.309913e-02 4.061063e-01
comp 10 2.034496e-02 1.130275e-01
comp 11 9.027568e-03 5.015315e-02
comp 12 3.566115e-03 1.981175e-02
comp 13 2.372720e-03 1.318178e-02
comp 14 8.013952e-04 4.452195e-03
comp 15 5.472749e-04 3.040416e-03
comp 16 3.512710e-04 1.951506e-03
comp 17 1.028975e-04 5.716530e-04
comp 18 4.950858e-05 2.750477e-04
cumulative percentage of variance
comp 1 63.70222
comp 2 77.92726
comp 3 87.00558
comp 4 92.19474
comp 5 94.73102
comp 6 97.03304
comp 7 98.73957
comp 8 99.38743
comp 9 99.79353
comp 10 99.90656
comp 11 99.95672
comp 12 99.97653
comp 13 99.98971
comp 14 99.99416
comp 15 99.99720
comp 16 99.99915
comp 17 99.99972
comp 18 100.00000
# Volvemos a realizar el análisis con este número de componentes y lo guardamos en una nueva variable
pca_fit_95 <-
PCA(provincias_df, scale.unit = TRUE, ncp = 6, graph = FALSE)
Realiza las gráficas que consideres más útiles para poder interpretar adecuadamente las componentes principales obtenidas. ¿Cuál es la expresión para calcular la primera componente en función de las variables originales?
# Con fviz_eig() podemos visualizar la varianza explicada por cada componente
fviz_eig(pca_fit,
barfill = "blue",
addlabels = TRUE) +
theme_minimal() +
labs(x = "Componente",
y = "% varianza explicada",
title = "Porcentaje de varianza explicada")
# Visualizamos de forma manual la varianza acumulada y marcamos con una línea
# el límite del 95%
cumvar <- as_tibble(pca_fit$eig)
names(cumvar) <- c("lambda", "var", "cumvar")
ggplot(cumvar, aes(x = 1:18, y = cumvar)) +
geom_col(fill = "pink") +
geom_hline(yintercept = 95,
linetype = "dashed", color="black") +
theme_minimal() +
labs(x = "Componente",
y = "% varianza explicada",
title = "% varianza acumulada")
¿Cuál es la contribución de las variables originales en cada componente principal seleccionada? Proporciona las nuevas coordenadas de los datos. ¿Cuál de las variables es la que está peor explicada?
# Mostramos el porcentaje de lo que aporta cada variable a la varianza explicada por cada componente (la suma de cada columna es el 100%)
pca_fit$var$contrib
Dim.1 Dim.2 Dim.3 Dim.4
Poblacion 8.61580869 6.216756e-04 2.494737e-01 0.28510690
Mortalidad 1.12979868 2.778556e+01 3.567076e+00 2.60231048
Natalidad 0.16505544 2.454404e+01 7.326830e+00 1.20275871
IPC 1.20805785 1.334604e+01 6.881053e+00 18.92662230
NumEmpresas 8.65432772 6.836923e-02 6.323813e-03 0.47800598
Industria 8.15804006 2.001441e-01 2.150098e-01 0.05499531
Construccion 8.60042932 2.059505e-01 1.459770e-02 0.06966501
CTH 8.57705398 1.127314e-02 2.385458e-01 0.07607058
Infor 7.92433313 1.765523e-01 4.178363e-01 4.90741583
AFS 8.55363151 2.707409e-02 1.564543e-01 0.84054061
APT 8.45209684 8.663137e-02 7.878255e-02 2.01245468
TasaActividad 1.30730170 1.093060e+01 1.315763e+01 21.44167757
TasaParo 0.01958975 2.130396e+01 1.500454e+01 4.84888573
Ocupados 8.66880711 2.835454e-02 5.901685e-04 0.36063054
PIB 8.46269279 1.307379e-01 1.405631e-01 1.78508842
CANE 0.03164342 9.251454e-01 4.313115e+01 7.75029908
TVF 8.50111166 2.558733e-04 9.952426e-01 0.19487506
VS 2.97022035 2.286851e-01 8.418293e+00 32.16259720
Dim.5 Dim.6 Dim.7 Dim.8
Poblacion 2.527731e-02 0.008577510 0.453944293 0.246968635
Mortalidad 5.830576e-02 0.113808680 3.786678534 45.865436885
Natalidad 1.459711e+01 9.825724095 34.577279772 6.566809467
IPC 3.099788e+01 12.301662219 10.785093429 2.143526238
NumEmpresas 4.053946e-03 0.004628499 0.027361631 0.001888042
Industria 2.251289e+00 0.379668213 0.419007777 7.685410328
Construccion 6.583274e-03 0.003921397 0.070969785 0.090355580
CTH 8.046371e-02 0.223154480 0.464317190 1.157164098
Infor 4.960879e-01 1.577980441 0.263865387 6.229380990
AFS 9.251174e-04 0.299366263 0.034286589 0.516264301
APT 1.006972e-01 0.640893842 0.006486645 1.558033658
TasaActividad 1.770063e+00 27.932330747 3.462400720 13.746861359
TasaParo 3.065031e-01 9.253743706 34.975747546 11.795755341
Ocupados 1.518964e-04 0.159122519 0.055008212 0.003181954
PIB 7.434893e-03 0.593372087 0.008014071 0.318075815
CANE 2.381808e+01 17.575176869 3.985286690 0.018186776
TVF 2.178721e-01 0.543501985 0.003119205 0.488797237
VS 2.526122e+01 18.563366447 6.621132525 1.567903296
Dim.9 Dim.10 Dim.11 Dim.12
Poblacion 0.403656111 1.225602e+01 3.468181374 2.930211e+00
Mortalidad 14.261306805 5.713827e-01 0.006288854 1.765745e-01
Natalidad 0.398576637 6.797395e-01 0.041165009 2.630225e-02
IPC 3.272409927 5.979783e-02 0.032599080 2.736822e-02
NumEmpresas 0.767126773 4.985770e-02 2.423727318 3.490594e+00
Industria 35.811073810 3.022485e+01 9.813002260 9.675864e-01
Construccion 0.087298038 3.680033e+00 67.549578054 2.770189e+00
CTH 6.826111430 7.577564e+00 3.122885224 5.624581e+00
Infor 17.233375618 2.073925e+01 2.111000192 2.715857e+00
AFS 3.189329543 7.879581e+00 3.908485723 1.765779e+01
APT 3.960702236 3.975704e-01 0.033761741 7.622727e+00
TasaActividad 6.076166191 6.547017e-04 0.049838582 4.427360e-05
TasaParo 0.796650328 1.261522e+00 0.019452912 4.399093e-02
Ocupados 0.009117979 2.392813e+00 0.238755925 4.258885e+00
PIB 2.446568540 9.644257e-01 5.027123117 4.947637e+01
CANE 2.236926812 3.262337e-02 0.129689442 4.733901e-03
TVF 0.904128940 1.027691e+01 1.910442674 2.206187e+00
VS 1.319474282 9.554030e-01 0.114022519 6.648526e-06
Dim.13 Dim.14 Dim.15 Dim.16
Poblacion 0.010584919 3.036391606 27.898840775 2.574944e+01
Mortalidad 0.046341011 0.016166935 0.003818960 5.454493e-05
Natalidad 0.029821073 0.005106366 0.011985631 1.184711e-04
IPC 0.008568048 0.001567563 0.001399104 4.584052e-03
NumEmpresas 8.745637241 3.937338798 4.706541418 1.023797e+00
Industria 2.535986690 0.699932223 0.134291796 7.556778e-02
Construccion 11.756162033 0.162675927 2.960956168 2.673956e-01
CTH 14.250376760 21.124534732 1.095000905 1.819282e+00
Infor 2.867309060 0.403726482 20.533772587 2.591662e-01
AFS 50.196214006 4.290448876 1.878724406 1.128202e-01
APT 8.131784119 4.602429924 13.485782801 1.404293e-01
TasaActividad 0.052080923 0.005873133 0.031075588 2.781868e-02
TasaParo 0.245955381 0.004304886 0.097036131 1.868554e-02
Ocupados 0.034211016 30.268423972 18.134286198 7.188261e+00
PIB 0.062791900 24.113880423 5.329854069 3.442912e-02
CANE 0.329367121 0.009781039 0.007911365 1.153070e-02
TVF 0.664259999 7.075007886 3.503657873 6.191091e+01
VS 0.032548701 0.242409229 0.185064227 1.355718e+00
Dim.17 Dim.18
Poblacion 1.329212e+01 1.068784e+00
Mortalidad 3.179377e-04 8.768940e-03
Natalidad 9.804085e-04 6.013621e-04
IPC 1.729371e-03 4.011722e-05
NumEmpresas 4.658536e+00 6.095188e+01
Industria 8.368365e-02 2.904591e-01
Construccion 1.023485e+00 6.797538e-01
CTH 1.555915e+01 1.217247e+01
Infor 1.041706e+01 7.260297e-01
AFS 4.059301e-01 5.213426e-02
APT 2.725248e+01 2.143626e+01
TasaActividad 1.840140e-03 5.741280e-03
TasaParo 1.126135e-04 3.556412e-03
Ocupados 2.695980e+01 1.239595e+00
PIB 3.397665e-01 7.588082e-01
CANE 1.317719e-03 1.141685e-03
TVF 1.651943e-03 6.020702e-01
VS 3.639765e-05 1.903701e-03
# Obtenemos unas nuevas coordenadas
pca_scores <- as_tibble(pca_fit$ind$coord)
names(pca_scores) <- c("PC_1", "PC_2", "PC_3", "PC_4", "PC_5", "PC_6", "PC_7", "PC_8", "PC_9", "PC_10", "PC_11", "PC_12", "PC_13", "PC_14", "PC_15", "PC_16", "PC_17", "PC_18")
pca_scores #nuevas coordenadas
# A tibble: 52 × 18
PC_1 PC_2 PC_3 PC_4 PC_5 PC_6 PC_7 PC_8
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 -1.41 0.473 0.0962 -0.458 0.131 -0.379 -0.0329 -0.0894
2 3.38 0.540 1.92 2.42 -1.94 1.80 0.821 -0.252
3 -0.617 2.61 0.208 -0.142 -0.0419 0.0504 -0.0829 0.122
4 -1.44 -0.000844 -2.03 -0.113 0.468 0.0944 0.288 -0.719
5 -0.204 -1.95 1.30 -0.714 -0.369 0.0167 0.362 -0.319
6 -1.05 1.17 1.80 -0.854 0.0754 -0.575 0.0999 -0.0206
7 1.53 0.260 -2.52 2.36 0.481 -0.567 -0.652 0.300
8 13.7 -1.61 -0.867 -0.279 1.04 0.765 -0.500 -0.194
9 0.576 -1.51 -1.18 -0.383 0.798 0.466 -0.213 -0.402
10 -1.20 -1.55 -0.892 0.989 0.602 0.532 -0.458 0.258
# … with 42 more rows, and 10 more variables: PC_9 <dbl>,
# PC_10 <dbl>, PC_11 <dbl>, PC_12 <dbl>, PC_13 <dbl>, PC_14 <dbl>,
# PC_15 <dbl>, PC_16 <dbl>, PC_17 <dbl>, PC_18 <dbl>
# Variable peor explicada
col <- c("#00AFBB", "#E7B800", "#FC4E07")
fviz_pca_var(pca_fit, col.var = "cos2",
gradient.cols = col,
repel = TRUE) +
theme_minimal() +
labs(title = "Coordenadas de las variables",
color = "Prop. var. explicada")
# La variable peor explicada analizando el gráfico será CANE
Calcula la matriz de distancias de los datos. Representa un mapa de calor de la matriz de datos, estandarizado y sin estandarizar, así como de la matriz de distancias. Comenta si se detectan inicialmente grupos de provincias.
# Calculamos la matriz de distancias
d <- dist(provincias_std_df, method = "euclidean")
# Visualizamos la matriz de distancias
fviz_dist(d, show_labels = TRUE)
# Mapa de calor de la matriz de datos provincias
heatmaply(provincias_df,
seriate = "mean",
row_dend_left = TRUE,
plot_method = "plotly")
# Mapa de calor de la matriz de datos provincias estandarizado
heatmaply(provincias_std_df,
seriate = "mean",
row_dend_left = TRUE,
plot_method = "plotly")
A priori observamos 4 grupos, uno constituido por Madrid y Barcelona,, otro por Valencia/Alicante, otro Ceuta/Melilla, y luego uno muy amplio que contiene el resto de ciudades del país, el cual analizandolo con detenimiento se podría observar que igual se dividiría en las ciudades de la mitad superior de España y otro de la mitad inferior.
Realiza varios análisis de clúster jerárquico con distintos enlaces y comenta las diferencias. En cada caso visualiza el dendograma y comenta cuántos clusters recomendarías usar.
# Clustering (single)
single_clust <- hclust(d, method = "single")
#Dendograma Clustering (single)
fviz_dend(single_clust, k =4,
cex = 0.5,
k_colors = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
color_labels_by_k = TRUE,
rect= TRUE) +
labs(title = "Dendograma Single")
Se observa que en el cluster simple nos aparecen 4 clusters, con Madrid, Barcelona Y Valencia diferenciadas, y luego el resto de ciudades del país. No me parece demasiado real y útil este análisis así que analizaremos el siguiente.
# Clustering (complete)
complete_clust <- hclust(d, method = "complete")
#Dendograma Clustering (complete)
fviz_dend(complete_clust, k =4,
cex = 0.5,
k_colors = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
color_labels_by_k = TRUE,
rect= TRUE) +
labs(title = "Dendograma Complete")
# Clustering (average)
average_clust <- hclust(d, method = "average")
#Dendograma Clustering (average)
fviz_dend(average_clust, k =4,
cex = 0.5,
k_colors = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
color_labels_by_k = TRUE,
rect= TRUE) +
labs(title = "Dendograma average")
# Clustering (centroid)
centroid_clust <-
hclust(d, method = "centroid")
# Dendograma
fviz_dend(centroid_clust, k = 4,
cex = 0.5,
k_colors =
c("#2E9FDF", "#00AFBB",
"#E7B800", "#FC4E07"),
color_labels_by_k = TRUE,
rect = TRUE) +
labs(title = "Dendograma (centroid)")
# Clustering (ward)
ward_clust <-
hclust(d, method = "ward.D2")
# Dendograma
fviz_dend(ward_clust, k = 4,
cex = 0.5,
k_colors =
c("#2E9FDF", "#00AFBB",
"#E7B800", "#FC4E07"),
color_labels_by_k = TRUE,
rect = TRUE) +
labs(title = "Dendograma (Ward)")
Nos aparece un dendograma bastante interesante que nos agrupa a Madrid/Barcelona por una parte, Alicante/Valencia por otra, y luego dos grupos, uno que observamos que se corresponde a la parte norte del país y otro a la parte sur.
¿Qué número óptimo de clusters nos indican los criterios Silhoutte y de Elbow? Representar los individuos agrupados según el número de clusters elegido.
# Nº de clusters óptimo según Silhoutte
# Nos aparece que el número óptimo son 2
fviz_nbclust(provincias_std_df, kmeans,
method = "silhouette") +
theme_minimal() +
labs(x = "nº clústeres (k)",
y = "Variabilidad total intra-clústeres (W)",
title = "Número óptimo basado en silhouette")
# Nº de clusters óptimo según Elbow
# Nos aparece que el número óptimo son 3
fviz_nbclust(provincias_std_df, kmeans,
method = "wss") +
geom_vline(xintercept = 3,
linetype = 2) +
theme_minimal() +
labs(x = "nº clústeres (k)",
y = "Variabilidad total intra-clústeres (W)",
title = "Número óptimo basado en variabilidad total intra-clústeres")
Finalmente escogemos 4 como el número de clusters. Vamos a representarlos ahora según los criterios Silhoutte y Elbow
# Creamos variable Kclust para poder representar Silhouette
kclust <- kmeans(provincias_std_df,
centers = 4, iter.max = 50)
silS <- silhouette(kclust$cluster, d)
row.names(silS) <- row.names(provincias_std_df)
# Visualización para Silohuete
fviz_silhouette(silS, label = TRUE) +
scale_fill_manual(values =
c("#2E9FDF", "#00AFBB",
"#E7B800", "#FC4E07")) +
scale_color_manual(values =
c("#2E9FDF", "#00AFBB",
"#E7B800", "#FC4E07")) +
theme_minimal() +
labs(title =
"Índice silhouette para k-means con k = 4") +
# Giramos etiquetas eje
theme(axis.text.x =
element_text(angle = 90,
vjust = 0.5,
hjust=1))
cluster size ave.sil.width
1 1 2 0.52
2 2 27 0.39
3 3 21 0.12
4 4 2 0.66
# Realizamos lo mismo para Elbow
# Clustering (ward)
ward_clust <-
hclust(d, method = "ward.D2")
groups <- cutree(ward_clust, k = 4)
silE <- silhouette(groups, d)
row.names(silE) <- row.names(provincias_std_df)
# Visualización
fviz_silhouette(silE, label = TRUE,
print.summary = FALSE) +
scale_fill_manual(values =
c("#2E9FDF", "#00AFBB",
"#E7B800", "#FC4E07")) +
scale_color_manual(values =
c("#2E9FDF", "#00AFBB",
"#E7B800", "#FC4E07")) +
theme_minimal() +
labs(title =
"Índice silhouette para jerárquico Ward con k = 4") +
# Giramos etiquetas eje
theme(axis.text.x =
element_text(angle = 90,
vjust = 0.5,
hjust = 1))
Con el número de clusters decidido en el apartado anterior realizar un agrupamiento no jerárquico de k-medias. Representar los clusters formados en los planos de las Componentes principales. Interpreta los resultados y evalúa la calidad del análisis clúster. Explica las provincias que forman cada uno de los clusters y comentar cuales son las características socioeconómicas que las hacen pertenecer a dicho cluster
# Clustering k-means
kclust <- kmeans(provincias_std_df,
centers = 4,
iter.max = 50)
kclust$totss
[1] 918
# Clustering
fviz_cluster(list(data =
provincias_std_df,
cluster =
kclust$cluster),
palette =
c("#2E9FDF", "#00AFBB",
"#E7B800", "#FC4E07"),
ellipse.type = "convex",
repel = TRUE,
show.clust.cent = FALSE) +
labs(title = "Cluster (k-means)") +
theme_minimal()
El análisis de K-medias nos arroja unos valores diferentes a los que hemos cribado según la matriz de distancias. Obtenemos también 4 clústers pero agrupados de manera diferente a la que hemos realizado nosotros manualmente. Por una parte tenemos agrupados Barcelona y Madrid que son las Provincias donde se concentrará la mayor riqueza del país ya que tienen el mayor nº de población, Num de empresas, Industria, Construcción etc. Luego nos aparece un clúster formado por las provincias medianas del país (Valencia, Baleares, Málaga…), provincias que están en el rango superior en valores como PIB, Industria, Construcción etc. Luego tenemos el grupo 3, el cual es algo diferente al que creamos nosotros con la matriz de distancias. Tenemos 3 provincias (Zaragoza, Lleida y Navarra) que podrían pertenecer al grupo 2 por sus características socioeconómicas. El resto de las provincias se encuentran en el rango medio, medio-alto o medio-bajo en todas las variables. En este grupo se concentran sobre todo las ciudades de la parte norte del país. Por último tenemos el grupo 4, que es el grupo donde se concentran los peores valores socioeconómicos, tasas de desempleo más altas, natalidad más alta, mortalidad más alta, PIB, Industria, Tasa de actividad más bajas de todo el país. Este grupo de provincias las podemos situar en la parte sur del país.
Podemos hacer un análisis bastante fiable de como están socioeconómicamente el país. Unas dos macrociudades en la punta, luego unas provincias medianas-grandes siguiendo, después provincias medianas del norte del país con valores medios y un grupo de provincias del sur rezagadas.